<?php
/***********************
 *  [数组类-公用函数]
 ***********************/
 
//=====================================
//一仅仅保留键值情况下,二维数组降维去重
//=====================================
function array_unique_numric($array2D){ 
    foreach ($array2D as $v){
        $v=join(',',$v);   //降维,也可以用implode,将一维数组的值转换为用逗号连接的字符串
        $temp[]=$v;
    }
    $temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
    foreach ($temp as $k => $v){
        $temp[$k]=explode(',',$v); //再将拆开的数组重新组装
    }
    return $temp;
}

//=====================================
//二根据某一键名判断,去重
//=====================================
function array_unique_assoc($arr, $key) {
    $tmp_arr = array();
    foreach ($arr as $k => $v) {
        if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在，若存在返回true
            unset($arr[$k]);
        } else {
            $tmp_arr[] = $v[$key];
        }
    }
    sort($arr); //sort函数对数组进行排序,为数组中的单元赋予新的键名
    return $arr;
}
//==========================
//三二维数组按指定的键值排序
//==========================
function array_sort($array,$keys,$type='asc'){
	if(!isset($array) || !is_array($array) || empty($array)){
		return '';
	}
	//排序字段名，如：id
	if(!isset($keys) || trim($keys)==''){
		return '';
	}
	//排序方式，如：desc、asc
	if(!isset($type) || $type=='' || !in_array(strtolower($type),array('asc','desc'))){
		return '';
	}
	//定义一个数组
	$keysvalue=array();
	foreach($array as $key=>$val){
		//对排序字段值进行过滤
		$val[$keys] = str_replace('-','',$val[$keys]);
		$val[$keys] = str_replace(' ','',$val[$keys]);
		$val[$keys] = str_replace(':','',$val[$keys]);

		//将记录中指定的键名放入数组中，如：[0]=>5,[1]=>3,[2]=>6
		$keysvalue[] =$val[$keys];//排序字段，如：id 索引=》排序键名
	}
	asort($keysvalue); //按值升序排序，且保持键名与键值之间的索引关系,如：[1]=>3,[0]=>5,[2]=>6
	reset($keysvalue); //指针重新指向数组第一个
	foreach($keysvalue as $key=>$vals) {
		$keysort[] = $key;     //0=>[1],1=>[0],2=>[2]
	}
	$keysvalue = array();
	$count=count($keysort);         //排序记录数
	if(strtolower($type) != 'asc'){ //降序
		for($i=$count-1; $i>=0; $i--) {
			$keysvalue[] = $array[$keysort[$i]];
		}
	}else{//升序
		for($i=0; $i<$count; $i++){
			$keysvalue[] = $array[$keysort[$i]];
		}
	}
	return $keysvalue;
}